package com.example.demo.suanfa;

import java.util.HashMap;
import java.util.Map;

public class StringS {


    /**
     * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
     *
     * 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。
     *
     */

    public static int reverse(int x) {
        long res=0;
        while (x!=0){
            res = res*10+x%10;
            x=x/10;
        }
        return (int)res == res?(int) res:0;
    }

    /**
     * 给定一个字符串 s ，找到 它的第一个不重复的字符，并返回它的索引 。如果不存在，则返回 -1 。
     * @param s
     * @return
     */
    public static int firstUniqChar(String s){
        int count[] = new int[26];
        char[] chars = s.toCharArray();
        //先统计每个字符出现的次数
        for (int i = 0; i < s.length(); i++)
            count[chars[i] - 'a']++;
        //然后在遍历字符串s中的字符，如果出现次数是1就直接返回
        for (int i = 0; i < s.length(); i++)
            if (count[chars[i] - 'a'] == 1)
                return i;
        return -1;
    }

    public static void main(String[] args) {
//        firstUniqChar("leetcode");
    int a ='A';
        System.out.println(a);
    }

    /**
     * 给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。
     *
     * 注意：若 s 和 t 中每个字符出现的次数都相同，则称 s 和 t 互为字母异位词。
     *
     * 作者：力扣 (LeetCode)
     * 链接：https://leetcode.cn/leetbook/read/top-interview-questions-easy/xn96us/
     * 来源：力扣（LeetCode）
     * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     */
    public static boolean isAnagram(String s, String t) {
        if(s.length()!=t.length()){
            return false;
        }
        char[] chars = s.toCharArray();
        Map<Character,Integer> map=new HashMap();
        for (int i = 0; i < chars.length; i++) {
            if(map.get(chars[i])==null){
                map.put(chars[i],1);
            }else{
                map.put(chars[i],map.get(chars[i])+1);
            }
        }
        char[] tChar = t.toCharArray();
        for (int i = 0; i < tChar.length; i++) {
            if(map.get(tChar[i])==null){
               return false;
            }else{
                map.put(tChar[i],map.get(tChar[i])-1);
            }
        }
        for (Integer i:map.values()){
            if(i!=0){
                return false;
            }
        }
        return true;

    }
}
